package org.NooLab.texx;


import org.NooLab.texx.components.*;
import org.NooLab.texx.properties.OutputSettings;
import org.NooLab.texx.properties.PersistenceSettings;
import org.NooLab.texx.properties.SettingsTransporter;
import org.NooLab.texx.properties.TexxAppGeneralPropertiesIntf;
import org.NooLab.texx.properties.TexxProperties;
import org.NooLab.texx.storage.FileOrganizer;


public abstract class TexxAppPropertiesAbstract 
												implements 
															TexxAppGeneralPropertiesIntf{

	
	protected transient static SettingsTransporter settingsTransporter;
	protected transient AlgorithmDeclarationsLoader algoDeclarations;

	protected TexxPluginSettingsIntf pluginSettings = new TexxPluginSettings();
	
	protected PersistenceSettings persistenceSettings;
	private TexxAppGeneralPropertiesIntf txxAppGeneralProperties;
	protected TexxProperties texxProperties;

	protected String dataSrcFilename = "";
	protected String systemRootDir;

	protected String supervisedDirectory = "";
	protected String algorithmsConfigPath = "" ;
	
	
	protected OutputSettings outputSettings ;
	
	protected TexxFactory texxFactory;
	protected int workerType;
	protected int multiProcessingLevel;

	transient protected FileOrganizer fileOrganizer;

	// ========================================================================
	public TexxAppPropertiesAbstract(){
	
		FileOrganizer fileorg = new FileOrganizer ();
	}
	// ========================================================================
	
	public TexxPluginSettingsIntf getPluginSettings() {
		return pluginSettings;
	}
	
	@Override
	public void setPluginSettings( TexxPluginSettingsIntf pluginsettings) {
		this.pluginSettings = pluginsettings;
	}

	

	@Override
	public TexxProperties getSelfReference() {
		
		return texxProperties;
	}
	

	@Override
	public AlgorithmDeclarationsLoader getAlgoDeclarations() {
		return algoDeclarations;
	}

	
 
	
	@Override
	public void setPluginSettings(TexxPluginSettings plugsettings) {
		
		pluginSettings = plugsettings;
	}
	
	@Override
	public int getMultiProcessingLevel() {
		
		return multiProcessingLevel;
	}
	
	@Override
	public int getShowSomProgressMode() {
		// TODO Auto-generated method stub
		return 0;
	}
	
	
	public String getSupervisedDirectory() {
		return supervisedDirectory;
	}

	
	@Override
	public TexxFactory getTxxFactory() {
		// 
		return texxFactory;
	}
	
	@Override
	public int getWorkerType() {
		return workerType;
	}

	public void setWorkerType(int value) {
		workerType = value;
	}

	

	@Override
	public String getDataSrcFilename() {
		return dataSrcFilename;
	}
	
	public String getDataSourceFilename() {
		return dataSrcFilename;
	}
	

	@Override
	public boolean addDataSource(int sourceType, String filename) {
		dataSrcFilename = filename;
		return true;
	}


	public void setOutputSettings(OutputSettings outputsettings) {
		this.outputSettings = outputsettings;
	}

	
	
}
